DAX (Data Analysis Expressions) হল একটি শক্তিশালী ভাষা যা Power BI, PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয় ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরির জন্য। DAX এর Ranking এবং Ordering ফাংশনগুলি বিশেষভাবে ডেটা সাজানো এবং র্যাংকিং করার জন্য ব্যবহৃত হয়। এই ফাংশনগুলো আপনাকে ডেটার মধ্যে relative position নির্ধারণ করতে সহায়ক হয়, যেমন কোন পণ্য বা গ্রাহক সবচেয়ে বেশি বিক্রি হয়েছে বা কোন সময়সীমার মধ্যে সবচেয়ে ভালো পারফর্ম করছে।
এখানে আমরা DAX এর কিছু জনপ্রিয় Ranking এবং Ordering ফাংশন যেমন RANKX, ORDER BY, TOPN ইত্যাদি সম্পর্কে আলোচনা করব।
১. RANKX ফাংশন
RANKX ফাংশনটি একটি টেবিলের মধ্যে র্যাংক নির্ধারণ করতে ব্যবহৃত হয়। এটি একটি নির্দিষ্ট কলামের বা এক্সপ্রেশনের র্যাংক প্রদান করে, যা নির্দিষ্ট কন্ডিশনের ভিত্তিতে গণনা করা হয়।
Syntax:
RANKX(<table>, <expression>, [<value>, <order>, <ties>])
- : যে টেবিলের জন্য র্যাংক তৈরি করতে চান।
- : একটি এক্সপ্রেশন যা প্রতি সারির র্যাংক নির্ধারণ করবে।
- (optional): কোনো নির্দিষ্ট মান, সাধারণত এটি ব্যবহার করা হয় যখন আপনি একটি নির্দিষ্ট র্যাংকিং শর্তের জন্য গণনা করতে চান।
- (optional): র্যাংকিংয়ের অর্ডার, যা 1 (Ascending) অথবা 0 (Descending) হতে পারে।
- (optional): Skip বা Dense টাইপ ব্যবহার করা যেতে পারে, যেখানে Skip মানে দুটি সমান মান হলে র্যাংক “skip” করা হবে, এবং Dense মানে সমান মানের জন্য পরবর্তী র্যাংক এক ধাপ কম হবে।
ব্যবহার:
ধরা যাক, আপনি Sales টেবিল থেকে Amount কলামের ভিত্তিতে প্রতিটি ProductID এর র্যাংক বের করতে চান:
Product Rank = RANKX(Sales, Sales[Amount], , DESC, Dense)
এখানে:
- Sales টেবিলের Amount কলামের উপর ভিত্তি করে র্যাংক নির্ধারণ করা হবে।
- DESC মানে র্যাংকিং Descending Order-এ হবে (বিক্রয়ের পরিমাণের বড় থেকে ছোট পর্যন্ত)।
- Dense মানে সমান পরিমাণ বিক্রয় হলে র্যাংক এক ধাপ কম হবে না, পরবর্তী র্যাংক একই থাকবে।
২. TOPN ফাংশন
TOPN ফাংশনটি একটি টেবিল থেকে top N সংখ্যক সারি নির্বাচন করতে ব্যবহৃত হয়, যা কোনো নির্দিষ্ট এক্সপ্রেশন বা মানের ভিত্তিতে র্যাংক করা হয়।
Syntax:
TOPN(<N>, <table>, <expression>, [<order>])
- : সংখ্যা কতটি সারি ফিরিয়ে আনতে চান (যেমন, শীর্ষ 5 পণ্য, শীর্ষ 10 বিক্রেতা)।
- : যে টেবিলের মধ্যে থেকে সারি নির্বাচন করতে চান।
- : কোন এক্সপ্রেশন বা কলাম যার ওপর ভিত্তি করে সারি নির্বাচন করা হবে।
- (optional): Ascending বা Descending অর্ডার নির্ধারণ করতে ব্যবহৃত হয়।
ব্যবহার:
ধরা যাক, আপনি Sales টেবিলের শীর্ষ 5 পণ্য নির্বাচন করতে চান Amount অনুযায়ী:
Top 5 Products = TOPN(5, Sales, Sales[Amount], DESC)
এখানে:
- TOPN(5, Sales, Sales[Amount], DESC): Sales টেবিলের শীর্ষ 5 পণ্য (প্রথম 5 পণ্য) Amount কলামের ভিত্তিতে নির্বাচন করবে এবং Descending Order অনুযায়ী করবে।
৩. ORDER BY (With SUMMARIZE)
ORDER BY ড্যাক্সে সরাসরি ফাংশন হিসেবে ব্যবহৃত হয় না, তবে SUMMARIZE ফাংশনের সাথে এটি ORDER BY হিসাবে ব্যবহৃত হতে পারে, যেখানে একটি টেবিলকে একটি নির্দিষ্ট কলাম বা এক্সপ্রেশন অনুযায়ী সাজানো হয়।
Syntax:
SUMMARIZE(<table>, <group_by_column1>, <expression>, <order_by_column>, <order>)
ব্যবহার:
ধরা যাক, আপনি Sales টেবিলের জন্য ProductID অনুসারে বিক্রয় পরিমাণ সাজাতে চান:
Product Sales Summary =
SUMMARIZE(Sales, Sales[ProductID], "Total Sales", SUM(Sales[Amount]), Sales[Amount], DESC)
এখানে:
- SUMMARIZE ফাংশনটি ProductID অনুযায়ী গ্রুপ করে, তারপর Total Sales নামক একটি নতুন কলাম তৈরি করে যা Sales[Amount] এর যোগফল হবে।
- পরবর্তী ধাপে, ORDER BY Sales[Amount] DESC ব্যবহার করে বিক্রয় পরিমাণের ভিত্তিতে ডেটা সাজানো হবে।
৪. RANKX এর সাথে Conditional Ranking
আপনি RANKX ফাংশনটি শর্তাধীন র্যাংকিং হিসাব করার জন্যও ব্যবহার করতে পারেন, যেমন ProductID অনুসারে র্যাংক, তবে শুধুমাত্র SalesAmount 1000 এর বেশি হলে।
Syntax:
Conditional Rank = RANKX(
FILTER(Sales, Sales[Amount] > 1000),
Sales[Amount], ,
DESC,
Dense
)
এখানে:
- FILTER(Sales, Sales[Amount] > 1000): প্রথমে Sales টেবিল থেকে শুধুমাত্র সেই রেকর্ডগুলো নির্বাচন করা হচ্ছে, যেখানে Amount 1000 এর বেশি।
- তারপর, RANKX এই ফিল্টার করা টেবিলের উপর র্যাংকিং করবে, Amount অনুসারে Descending Order।
সারাংশ
Ranking এবং Ordering ফাংশনগুলি DAX-এ একটি গুরুত্বপূর্ণ ভূমিকা পালন করে, বিশেষ করে যখন আপনি ডেটা র্যাংকিং বা সাজানোর কাজ করছেন। RANKX, TOPN, এবং ORDER BY ফাংশনগুলি ডেটার মধ্যে তুলনা এবং তার অবস্থান নির্ধারণ করতে সাহায্য করে, যা ব্যবসায়িক সিদ্ধান্ত গ্রহণ এবং রিপোর্টিংয়ের জন্য অত্যন্ত গুরুত্বপূর্ণ। DAX ফাংশনের মাধ্যমে আপনি নির্দিষ্ট condition অনুযায়ী র্যাংকিং করতে পারেন এবং সঠিক ডেটা বিশ্লেষণ করতে সক্ষম হন।
DAX (Data Analysis Expressions) হল একটি শক্তিশালী ভাষা যা Power BI, Excel PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয় ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরির জন্য। RANKX একটি গুরুত্বপূর্ণ DAX ফাংশন যা ডেটার মধ্যে ranking তৈরি করতে ব্যবহৃত হয়, যেমন বিক্রয় পরিমাণ, পণ্য, অথবা অন্য কোনো মেট্রিক্স অনুযায়ী র্যাঙ্ক নির্ধারণ করা।
RANKX ফাংশনটি বিশেষভাবে ব্যবহৃত হয় যখন আপনি কোনো ডেটাসেটের মধ্যে একটি নির্দিষ্ট পরিমাপের ভিত্তিতে rank (অথবা অবস্থান) নির্ধারণ করতে চান। এটি খুবই উপকারী যখন আপনি দেখতে চান কোন আইটেম বা একক বেশি, কম, বা সমান অবস্থানে আছে।
RANKX Function এর Syntax
RANKX(<table>, <expression>, [<value>, <order>, <ties>])
- : একটি টেবিল বা এক্সপ্রেশন, যেটি র্যাঙ্কের জন্য ব্যবহৃত হবে।
- : সেই এক্সপ্রেশন বা মান যা ভিত্তি করে র্যাঙ্ক নির্ধারণ করা হবে।
- []: ঐচ্ছিক, এটি কাস্টম মান প্রদান করে যেটি সারির জন্য র্যাঙ্ক নির্ধারণ করতে ব্যবহৃত হয়।
- []: ঐচ্ছিক, র্যাঙ্কের ক্রম নির্ধারণ করা হয় (ASCENDING বা DESCENDING)। ডিফল্ট হলো DESCENDING।
- []: ঐচ্ছিক, একাধিক একসাথে র্যাঙ্ক হলে কীভাবে তা পরিচালিত হবে, যেমন Skip বা Dense।
RANKX ফাংশনের উদাহরণ
ধরা যাক, আপনি একটি Sales টেবিলের মধ্যে SalesAmount অনুযায়ী বিক্রয়ের অবস্থান (rank) বের করতে চান। এই ক্ষেত্রে RANKX ফাংশনটি ব্যবহার করা হবে।
1. SalesAmount অনুযায়ী Rank নির্ধারণ করা
Sales Rank = RANKX(
ALL(Sales),
Sales[SalesAmount],
,
DESC,
Dense
)
এখানে:
- ALL(Sales): Sales টেবিলের সমস্ত সারি এবং ডেটা থেকে ফিল্টার সরিয়ে নেবে, যাতে সমস্ত ডেটা ব্যবহৃত হয় র্যাঙ্ক নির্ধারণ করতে।
- Sales[SalesAmount]: এই কলামটি ব্যবহার করে SalesAmount অনুযায়ী র্যাঙ্ক নির্ধারণ করা হবে।
- DESC: র্যাঙ্ক ডাউনলোড করা হবে, অর্থাৎ, সর্বোচ্চ বিক্রয় প্রথমে র্যাঙ্ক হবে।
- Dense: যদি একাধিক পণ্য একই র্যাঙ্ক পায়, তাহলে পরবর্তী র্যাঙ্কটি আগের র্যাঙ্কের পরে একটি ধারাবাহিক সংখ্যা হবে (যেমন, 1, 2, 2, 4)।
2. RANKX-এর সাথে FILTER ব্যবহার করা
ধরা যাক, আপনি যদি শুধুমাত্র একটি নির্দিষ্ট অঞ্চলের (Region) বিক্রয় অনুযায়ী র্যাঙ্ক নির্ধারণ করতে চান, তাহলে FILTER ফাংশন ব্যবহার করতে পারেন:
Sales Rank by Region = RANKX(
FILTER(Sales, Sales[Region] = "East"),
Sales[SalesAmount],
,
DESC,
Dense
)
এখানে:
- FILTER(Sales, Sales[Region] = "East"): Sales টেবিলকে Region = "East" শর্তে ফিল্টার করা হবে।
- এরপর, SalesAmount অনুযায়ী র্যাঙ্ক নির্ধারণ করা হবে।
3. RANKX with Custom Measure
আপনি একটি কাস্টম মেজার তৈরি করে RANKX এর মাধ্যমে র্যাঙ্ক নির্ধারণ করতে পারেন। উদাহরণস্বরূপ, যদি আপনি Profit এবং SalesAmount এর ভিত্তিতে Rank নির্ধারণ করতে চান:
Profit Rank = RANKX(
ALL(Sales),
[Total Profit] / SUM(Sales[SalesAmount]),
,
DESC,
Dense
)
এখানে:
- [Total Profit] একটি কাস্টম মেজার, যা Sales টেবিলের Profit নির্ধারণ করে।
- তারপর, মেজারটি SalesAmount এর সাথে তুলনা করে র্যাঙ্ক বের করা হবে।
RANKX-এ Ties Management
RANKX ফাংশনে ties (একই র্যাঙ্কে একাধিক আইটেম থাকা) ব্যবস্থাপনা করার জন্য দুটি বিকল্প রয়েছে:
১. Skip (ডিফল্ট):
যখন একাধিক আইটেম একই র্যাঙ্ক পায়, তখন পরবর্তী র্যাঙ্ক skip হয়ে যায়। যেমন, যদি দুটি আইটেম র্যাঙ্ক 1 পায়, তবে পরবর্তী আইটেম র্যাঙ্ক 3 পাবে (অর্থাৎ, 2 র্যাঙ্ক বাদ পড়বে)।
২. Dense:
যখন একাধিক আইটেম একই র্যাঙ্ক পায়, তখন পরবর্তী র্যাঙ্কটি ধারাবাহিকভাবে দেওয়া হয়। যেমন, যদি দুটি আইটেম র্যাঙ্ক 1 পায়, তবে পরবর্তী আইটেম র্যাঙ্ক 2 পাবে (অর্থাৎ, কোনো র্যাঙ্ক বাদ পড়বে না)।
RANKX এবং ORDER BY
আপনি RANKX ফাংশনটি ডেটাকে ascending অথবা descending অর্ডারে সাজিয়ে র্যাঙ্ক করতে ব্যবহার করতে পারেন। এতে, RANKX ডেটা অর্ডারের ভিত্তিতে র্যাঙ্ক নির্ধারণ করবে।
Descending Order (ডিফল্ট):
Sales Rank = RANKX(
ALL(Sales),
Sales[SalesAmount],
,
DESC
)
Ascending Order:
Sales Rank = RANKX(
ALL(Sales),
Sales[SalesAmount],
,
ASC
)
সারাংশ
RANKX হল একটি শক্তিশালী DAX ফাংশন যা ডেটার মধ্যে ranking বা অবস্থান নির্ধারণ করতে ব্যবহৃত হয়। এটি বিভিন্ন filter context, aggregation, এবং grouping প্রয়োগ করে ডেটাকে র্যাঙ্ক করার ক্ষমতা প্রদান করে। আপনি RANKX ফাংশনটি SalesAmount, Profit, বা অন্য যেকোনো মেট্রিক্সের উপর ভিত্তি করে ডেটার মধ্যে র্যাঙ্ক বের করতে ব্যবহার করতে পারেন। এছাড়া, ties ব্যবস্থাপনা এবং ascending/descending order দিয়ে কাস্টম র্যাঙ্ক তৈরি করা যায়।
DAX (Data Analysis Expressions) একটি শক্তিশালী এক্সপ্রেশন ভাষা যা Power BI, Power Pivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয়। TOPN ফাংশনটি DAX-এর একটি গুরুত্বপূর্ণ ফাংশন যা ব্যবহারকারীদের একটি নির্দিষ্ট সংখ্যক শীর্ষ মান (Top N values) বের করতে সহায়ক হয়। এটি মূলত ডেটা সেটের শীর্ষ (Top) বা নীচের (Bottom) মান নির্বাচন করতে ব্যবহৃত হয়, যা সাধারণত ranked ডেটার বিশ্লেষণের জন্য উপকারী।
এই প্রবন্ধে, আমরা TOPN ফাংশনের ব্যবহার, এর সিনট্যাক্স এবং উদাহরণগুলি সম্পর্কে আলোচনা করব।
TOPN ফাংশন
TOPN ফাংশনটি একটি টেবিল বা কলাম থেকে শীর্ষ (Top N) মানগুলো নির্বাচন করে, যা নির্দিষ্ট ক্রম অনুসারে সাজানো থাকে (যেমন, সবচেয়ে বড় বা সবচেয়ে ছোট মান)। এটি আপনাকে একটি নির্দিষ্ট সংখ্যক রেকর্ড (যেমন, শীর্ষ 5, শীর্ষ 10) বের করতে সাহায্য করে।
সিনট্যাক্স:
TOPN(<N>, <Table>, <OrderBy_Column>, [<Order>])
- : এটি সংখ্যাটি যা আপনি নির্ধারণ করবেন, যেমন শীর্ষ 5, শীর্ষ 10, ইত্যাদি।
- : টেবিল বা কলাম যেটি আপনি শীর্ষ মান বের করতে চান।
- <OrderBy_Column>: এটি সেই কলাম যা ভিত্তি করে টেবিলের মান সাজানো হবে (অর্থাৎ, ক্রম নির্ধারণ করা হবে)।
- : এটি ঐচ্ছিক, যেখানে আপনি ASC (ascending) বা DESC (descending) ব্যবহার করতে পারেন। ডিফল্টভাবে এটি DESC (descending) হয়।
TOPN ফাংশনের উদাহরণ
ধরা যাক, আপনার একটি Sales টেবিল রয়েছে, যেখানে Product, SalesAmount, এবং SalesDate কলাম রয়েছে। আপনি যদি শীর্ষ 5 বিক্রিত পণ্য বের করতে চান, তাহলে TOPN ফাংশনটি ব্যবহার করা হবে।
উদাহরণ ১: শীর্ষ 5 বিক্রিত পণ্য
Top 5 Products by Sales =
TOPN(5, Sales, Sales[SalesAmount], DESC)
এখানে:
- 5: আপনি শীর্ষ 5 পণ্য চান।
- Sales: এটি টেবিল যা আপনি বিশ্লেষণ করছেন।
- Sales[SalesAmount]: এটি সেই কলাম যা দ্বারা আপনি পণ্যগুলো সাজাতে চান, বা যেটি ভিত্তি করে শীর্ষ 5 নির্বাচন হবে।
- DESC: এটি নির্দেশ করে যে মানগুলো descending order অনুযায়ী সাজানো হবে (যেমন, সবচেয়ে বেশি বিক্রিত পণ্য প্রথমে থাকবে)।
উদাহরণ ২: শীর্ষ 3 পণ্য সবচেয়ে কম বিক্রির সাথে
Bottom 3 Products by Sales =
TOPN(3, Sales, Sales[SalesAmount], ASC)
এখানে:
- 3: আপনি শীর্ষ 3 পণ্য চান, কিন্তু এখানে ascending order (ASC) ব্যবহার করা হয়েছে, তাই কম বিক্রিত পণ্য প্রথমে দেখাবে।
উদাহরণ ৩: শীর্ষ 10 বিক্রিত পণ্য তাদের Product ID অনুযায়ী
Top 10 Products by Sales ID =
TOPN(10, Sales, Sales[ProductID], DESC)
এখানে:
- আপনি শীর্ষ 10 ProductID নির্বাচন করতে চাইছেন, এবং পণ্যগুলো ProductID কলামের ক্রম অনুযায়ী সাজানো হবে।
TOPN ফাংশনের ব্যবহারিক সুবিধা
১. Ranking Data (ডেটার র্যাংকিং):
TOPN ফাংশনটি ডেটাকে র্যাংক করতে সহায়ক, যা একটি নির্দিষ্ট সংখ্যক শীর্ষ মান বের করতে পারে। এটি ডেটার মধ্যে top 10, bottom 5 ইত্যাদি নির্ধারণ করতে ব্যবহৃত হয়।
২. Filter Data (ডেটা ফিল্টারিং):
আপনি TOPN ফাংশনটি একটি নির্দিষ্ট টেবিলের উপর ব্যবহার করে ফিল্টার করতে পারেন, যেমন শীর্ষ 5 পণ্য বা শীর্ষ 10 বিক্রয়। এটি ডেটা বিশ্লেষণের জন্য খুবই সহায়ক।
৩. Trend Analysis (প্রবণতা বিশ্লেষণ):
বিশ্লেষকরা বিভিন্ন টাইমফ্রেমের জন্য TOPN ব্যবহার করে বিক্রয় বা মুনাফা পরিমাপ করতে পারেন এবং কোন পণ্য বা পরিষেবা সবচেয়ে সফল তা নির্ধারণ করতে পারেন।
৪. Performance Monitoring (পারফরম্যান্স মনিটরিং):
TOPN ফাংশনটি কোম্পানির পারফরম্যান্স ট্র্যাক করতে সহায়ক, যেমন Top Performers বা Top Customers দেখতে।
TOPN এবং FILTER ফাংশনের সমন্বয়
TOPN ফাংশনটি FILTER ফাংশনের সাথে সমন্বয়ে ব্যবহার করা যেতে পারে যাতে আরও ডাইনামিক এবং কাস্টম বিশ্লেষণ করা যায়।
উদাহরণ: শীর্ষ 5 পণ্য (FILTER এর মাধ্যমে)
Top 5 Products =
TOPN(5, FILTER(Sales, Sales[SalesAmount] > 1000), Sales[SalesAmount], DESC)
এখানে:
- FILTER(Sales, Sales[SalesAmount] > 1000): এখানে প্রথমে Sales টেবিল ফিল্টার করা হয়েছে, যেখানে বিক্রয়ের পরিমাণ 1000 এর বেশি।
- তারপর, TOPN ফাংশনটি শীর্ষ 5 পণ্য বের করবে যেগুলি 1000 এর বেশি বিক্রয় করেছে।
সারাংশ
TOPN ফাংশনটি DAX-এ একটি অত্যন্ত শক্তিশালী টুল যা ব্যবহারকারীদের একটি নির্দিষ্ট সংখ্যক শীর্ষ মান (Top N) বের করতে সহায়ক। এটি ranking, filtering, এবং trend analysis এর জন্য ব্যবহৃত হয়। TOPN ফাংশনটি খুবই কার্যকরী যখন আপনি একটি বড় ডেটাসেটের মধ্যে শীর্ষ 5 বা শীর্ষ 10 মান বের করতে চান। FILTER এর সাথে সমন্বয়ে এটি আরও ডাইনামিক এবং কাস্টম বিশ্লেষণ তৈরি করতে সহায়ক হয়।
DAX (Data Analysis Expressions) হলো একটি শক্তিশালী ভাষা যা Power BI, Power Pivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয়। DAX-এর সাহায্যে ডেটা বিশ্লেষণ, কাস্টম ক্যালকুলেশন এবং রিপোর্ট তৈরি করা সম্ভব। যখন আপনি data sorting বা ডেটা সাজানোর প্রয়োজন অনুভব করেন, তখন SORTBYCOLUMNS ফাংশনটি খুবই কার্যকরী হতে পারে।
SORTBYCOLUMNS ফাংশনটি একটি বা একাধিক কলাম ভিত্তিতে টেবিলের ডেটা সাজানোর জন্য ব্যবহৃত হয়। এটি বিশেষভাবে Power BI ড্যাশবোর্ড বা রিপোর্টে ডেটাকে বিভিন্ন ক্রম অনুযায়ী সাজাতে ব্যবহার করা হয়।
SORTBYCOLUMNS ফাংশনের সিনট্যাক্স
Syntax:
SORTBYCOLUMNS(<table>, <column1>, <order1>, <column2>, <order2>, ...)
- : এটি সেই টেবিল যার ডেটা আপনি সাজাতে চান।
- : প্রথম কলাম যার ওপর ভিত্তি করে ডেটা সাজানো হবে।
- : প্রথম কলামের জন্য সাজানোর অর্ডার। এটি ASC (ascending) বা DESC (descending) হতে পারে।
- , : অতিরিক্ত কলাম এবং তাদের সাজানোর অর্ডার (ঐচ্ছিক)।
Notes:
- ASC (ascending): ছোট থেকে বড় (যেমন, A-Z বা 1-10)।
- DESC (descending): বড় থেকে ছোট (যেমন, Z-A বা 10-1)।
SORTBYCOLUMNS ফাংশনের ব্যবহার
SORTBYCOLUMNS ফাংশনটি টেবিলের ডেটাকে এক বা একাধিক কলামের মানের ভিত্তিতে সাজাতে সহায়ক। এটি বিশেষভাবে multiple columns দিয়ে সাজানোর জন্য ব্যবহৃত হয়, যেখানে আপনি একাধিক শর্ত বা ক্রমে ডেটা সাজাতে চান।
ব্যবহার উদাহরণ:
ধরা যাক, আপনার কাছে একটি Sales টেবিল রয়েছে যেখানে ProductID, SalesAmount, এবং Region এর তথ্য রয়েছে। আপনি চান SalesAmount এর ভিত্তিতে ডেটা সাজাতে এবং একই সময়ে যদি দুটি পণ্য একই SalesAmount থাকে, তবে Region এর ভিত্তিতে সাজানো হোক।
SortedSales =
SORTBYCOLUMNS(
Sales,
Sales[SalesAmount], DESC,
Sales[Region], ASC
)
এই ফাংশনটি প্রথমে SalesAmount এর ভিত্তিতে ডেটা Descending (DESC) অর্ডারে সাজাবে, এবং যদি দুইটি পণ্য একই SalesAmount থাকে, তাহলে Region এর ভিত্তিতে Ascending (ASC) অর্ডারে সাজাবে।
SORTBYCOLUMNS ফাংশনের আরও উদাহরণ
১. Product Sales Sorting
আপনি যদি একটি টেবিল সাজাতে চান যেখানে ProductID এবং SalesAmount রয়েছে এবং আপনি চান SalesAmount এর উপর ভিত্তি করে সাজানো হোক:
SortedProductSales =
SORTBYCOLUMNS(
ProductSales,
ProductSales[SalesAmount], DESC
)
এটি SalesAmount কলামটি Descending (DESC) অর্ডারে সাজাবে।
২. Multiple Columns Sorting
যদি আপনি ProductID এবং SalesAmount এর ভিত্তিতে একাধিক কলাম দ্বারা ডেটা সাজাতে চান:
SortedProductSales =
SORTBYCOLUMNS(
ProductSales,
ProductSales[ProductID], ASC,
ProductSales[SalesAmount], DESC
)
এটি প্রথমে ProductID কলামকে Ascending (ASC) অর্ডারে সাজাবে এবং যদি দুটি পণ্য এক্সাক্টলি একই ProductID থাকে তবে SalesAmount কলামটি Descending (DESC) অর্ডারে সাজাবে।
SORTBYCOLUMNS ফাংশনের সুবিধা
- Multiple Column Sorting: SORTBYCOLUMNS ফাংশনটি একাধিক কলাম ব্যবহার করে ডেটা সাজানোর সুবিধা প্রদান করে। এটি বিশেষভাবে তখন কার্যকরী হয় যখন আপনি একাধিক শর্তে ডেটা সাজাতে চান।
- Dynamic Sorting: ড্যাশবোর্ড বা রিপোর্টে ডেটা সোজা এবং ইন্টার্যাকটিভভাবে সাজানো যায়।
- Custom Sorting: এটি আপনাকে আপনার ব্যবসায়িক প্রয়োজন অনুযায়ী কাস্টম ডেটা সাজানোর সুযোগ দেয়।
সারাংশ
SORTBYCOLUMNS ফাংশনটি DAX-এ একটি গুরুত্বপূর্ণ ফাংশন যা টেবিলের ডেটাকে এক বা একাধিক কলামের ভিত্তিতে সাজাতে সহায়ক। এটি multiple columns sorting এবং dynamic sorting এর জন্য খুবই কার্যকরী, যেখানে আপনি সহজেই ডেটার ক্রম পরিবর্তন করতে পারেন। এই ফাংশনটি Power BI এবং Excel PowerPivot-এ ব্যবহারকারীদের ডেটা বিশ্লেষণে সাহায্য করে, যা তাদের রিপোর্ট এবং ড্যাশবোর্ড তৈরি করতে আরও কার্যকরী করে তোলে।
DAX (Data Analysis Expressions) হল একটি ভাষা যা Power BI, PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয় ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন করার জন্য। EARLIER ফাংশনটি DAX-এর একটি শক্তিশালী ফাংশন যা row context এবং filter context ব্যবহারের মাধ্যমে পূর্ববর্তী সারির মান রেফারেন্স করতে সাহায্য করে।
EARLIER ফাংশনটি সাধারণত calculated columns বা iterative functions-এ ব্যবহৃত হয়, যেখানে প্রতিটি সারির জন্য একটি মান গণনা করতে হয় এবং পূর্ববর্তী সারির মানের সাথে তুলনা করতে হয়।
EARLIER Function এর Syntax
EARLIER ফাংশনের সেন্ট্যাক্স হলো:
EARLIER(<expression>, <n>)
- : এটি একটি এক্সপ্রেশন বা কলাম যা আপনি পূর্ববর্তী রো (row) থেকে রেফারেন্স করতে চান।
- : এটি অপশনাল আর্গুমেন্ট যা ডেটার লেভেল (level) বা কনটেক্সটের সংখ্যা নির্ধারণ করে। সাধারণত একক আর্গুমেন্ট দিয়ে কাজ করা হয়।
EARLIER ফাংশনটি সাধারণত iterative functions বা row context-এর মধ্যে ব্যবহৃত হয়, যেমন SUMX, FILTER, ADDCOLUMNS, ইত্যাদি, যেখানে বর্তমান রো বা সারির উপর একটি হিসাব করতে গিয়ে পূর্ববর্তী রো (row) এর মানের প্রয়োজন হয়।
EARLIER Function এর ব্যবহার
EARLIER ফাংশনটি ব্যবহার করার প্রধান উদ্দেশ্য হল একটি previous row reference (পূর্ববর্তী সারির রেফারেন্স) তৈরি করা এবং সেই রেফারেন্স ব্যবহার করে কাস্টম ক্যালকুলেশন তৈরি করা। এটি সাধারণত calculated column তৈরি করার সময় ব্যবহৃত হয়।
ব্যবহার উদাহরণ:
ধরা যাক, আমাদের একটি Sales টেবিল আছে, যেখানে ProductID, SalesAmount, এবং Discount কলাম রয়েছে। আমরা SalesAmount এবং Discount এর গুণফল বের করতে চাই এবং প্রতিটি রো (row) এর জন্য previous row এর SalesAmount এর সাথে তুলনা করতে চাই। এখানে EARLIER ফাংশনটি ব্যবহৃত হবে।
Sales with Previous =
ADDCOLUMNS(
Sales,
"Prev Sales",
EARLIER(Sales[SalesAmount], 1),
"Sales Difference",
Sales[SalesAmount] - EARLIER(Sales[SalesAmount], 1)
)
এই ফর্মুলাটি দুটি নতুন কলাম তৈরি করবে:
- Prev Sales: বর্তমান সারির আগের SalesAmount মান (previous row reference)।
- Sales Difference: বর্তমান সারির SalesAmount এবং আগের সারির SalesAmount এর মধ্যে পার্থক্য।
এখানে EARLIER(Sales[SalesAmount], 1) ব্যবহৃত হয়েছে, যেখানে:
- প্রথম আর্গুমেন্ট Sales[SalesAmount] নির্দেশ করছে যে আমরা কোন কলাম থেকে মান নিতে চাই।
- দ্বিতীয় আর্গুমেন্ট 1 নির্দেশ করছে যে এটি একটি পূর্ববর্তী সারির রেফারেন্স।
EARLIER Function এর বাস্তব ব্যবহার
EARLIER ফাংশনটি ব্যবসায়িক বিশ্লেষণে বিশেষভাবে কার্যকরী, যেখানে আপনি একটি calculated column এর জন্য শর্তাবলীর ভিত্তিতে মান তুলনা করতে চান। এটি iterative calculations-এ ব্যবহৃত হয়, যেখানে আপনি একটি সারির মানের সাথে পূর্ববর্তী সারির মানের তুলনা করতে চান, যেমন:
- Cumulative calculations
- Running totals
- Comparing current and previous values
উদাহরণ ১: Running Total Calculation
ধরা যাক, আপনি Sales টেবিলের জন্য running total (মোট বিক্রয়) হিসাব করতে চান, যেখানে প্রতি সারির জন্য আগের সারির SalesAmount যোগ করা হবে:
Running Total =
CALCULATE(
SUM(Sales[SalesAmount]),
FILTER(
Sales,
Sales[ProductID] <= EARLIER(Sales[ProductID])
)
)
এটি একটি running total তৈরি করবে, যেখানে SalesAmount এর মোট যোগফল প্রতিটি সারির জন্য যোগ করা হবে।
উদাহরণ ২: Previous Row Comparison
আপনি যদি Sales টেবিলের জন্য SalesAmount এবং Discount এর উপর ভিত্তি করে আগের সারির মানের সাথে তুলনা করতে চান:
Sales Difference =
Sales[SalesAmount] - EARLIER(Sales[SalesAmount], 1)
এখানে:
- Sales[SalesAmount] বর্তমান সারির SalesAmount।
- EARLIER(Sales[SalesAmount], 1) আগের সারির SalesAmount।
এটি Sales Difference তৈরি করবে, যা প্রতিটি সারির জন্য বর্তমান এবং পূর্ববর্তী বিক্রয়ের পার্থক্য দেখাবে।
EARLIER Function এর সুবিধা
- Previous Row Reference: EARLIER ফাংশনটি পূর্ববর্তী সারির মানের রেফারেন্স তৈরি করতে সহায়ক, যা অনেক সময় কাস্টম ক্যালকুলেশন তৈরি করতে দরকার হয়।
- Conditional Aggregation: এটি শর্ত অনুযায়ী aggregation করার জন্য খুবই কার্যকরী, যেখানে আপনি বর্তমান রো বা সারির মানের সাথে পূর্ববর্তী রো তুলনা করতে চান।
- Running Total and Cumulative Calculations: আপনি running totals এবং cumulative calculations করতে EARLIER ফাংশন ব্যবহার করতে পারেন।
- Iterative Calculations: যখন আপনাকে iterative বা লুপের মতো কাজ করতে হয়, যেখানে একটি রো এর মানের সাথে পূর্ববর্তী রো এর মান তুলনা করতে হয়, তখন EARLIER একটি শক্তিশালী টুল হিসেবে কাজ করে।
সারাংশ
EARLIER ফাংশনটি DAX-এ row context এবং previous row reference তৈরি করার জন্য একটি গুরুত্বপূর্ণ ফাংশন। এটি ব্যবহার করে আপনি একটি কাস্টম ক্যালকুলেশন তৈরি করতে পারেন যা পূর্ববর্তী সারির মানের সঙ্গে তুলনা করে একটি নতুন মান নির্ধারণ করে। এটি running totals, cumulative calculations, এবং iterative calculations করতে ব্যবহৃত হয় এবং ব্যবসায়িক বিশ্লেষণ এবং ডেটা মডেলিংয়ে অত্যন্ত কার্যকরী।
Read more